#pragma once
#ifndef OBR_COMMON_H
#define OBR_COMMON_H

#define MAX_INTERNAL_LOG_SIZE 2048
#define _USE_MATH_DEFINES

// std libs
#include <cassert>
#include <chrono>
#include <cmath>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <ctime>
#include <exception>
#include <fstream>
#include <functional>
#include <ios>
#include <iostream>
#include <string>
#include <typeindex>
#include <typeinfo>
#include <vector>

// vcpkg libs
#include <json/json.h>
#include <opencv2/opencv.hpp>

// cuda & optix libs
#include <cublas_v2.h>
#include <cuda_runtime.h>
#include <cuda_runtime_api.h>
#include <curand.h>
#include <nvrtc.h>
#include <optix.h>
#include <optix_stack_size.h>
#include <optix_stubs.h>
#include <optix_types.h>

// utils libs
#include "CompileConfig.h"
#include "flags.h"
#include <OBJ_Loader.h>

namespace OBR
{
} // namespace OBR

#endif